package com.patterns.proxy.forceProxyPlayer;

/**
 * Created by Xiao Yiyun on 2017/4/22.
 * 强制代理
 * 一个游戏玩家的实现类
 */
class GamePlayer implements IGamePlayer {
    //游戏玩家的名字
    private String name = "";
    //我的代理玩家对象
    private IGamePlayer proxyPlayer = null;
    public GamePlayer(String name) {
        this.name = name;
    }

    //得到自己的代理玩家
    public IGamePlayer getProxy() {
        //new一个代理对象为自己的代理玩家，并返回
        this.proxyPlayer = new GamePlayerProxy(this);
        return this.proxyPlayer;
    }

    //校验是否是我的代理玩家进行的游戏操作
    //即必须是代理玩家才能访问该方法
    private boolean isProxy() {
        if (this.proxyPlayer == null) {
            return false;
        } else {
            return true;
        }
    }

    public void login(String user, String pwd) {
        if (this.isProxy()) {
            System.out.println("账号为"+user+"的玩家"+name+"登录成功");
        } else {
            System.out.println("请使用指定的代理访问");
        }

    }

    public void killBoss() {
        if (this.isProxy()) {
            System.out.println(this.name + "玩家正在杀怪!!!");
        } else {
            System.out.println("请使用指定的代理访问");
        }
    }

    public void upGrade() {
        if (this.isProxy()) {
            System.out.println(this.name + "玩家又升了一级！！！！！！！");
        } else {
            System.out.println("请使用指定的代理访问");
        }
    }
}
